--- cross module visibility of items
module frege.compiler.enums.Visibility where 

--- cross module visibility of items
data Visibility =
    Private         --- item is not available in other packages, except constructors for inlined code
    | Protected     --- item is available but will be imported only on demand
    | Public        --- item is available and will be imported by default
    | Abstract      --- makes type public but all constructors private

instance Show Visibility where
    show Private   = "private"
    show Public    = "public"
    show Protected = "protected"
    show Abstract  = "abstract"


derive Eq   Visibility


derive Ord  Visibility


